#ifndef VECTOR2_H
#define VECTOR2_H
#include "StompedReality/Core.h"
#include "math.h"

StaticRegDummy( Vector2 )

namespace StompedReality
{
namespace Math
{
class Matrix;
}
namespace Math
{
struct Vector2Reg
{
  static int registeType( );
};
class DLL_EXPORT Vector2
{
  friend struct Vector2Reg;

 private:

  float m_X;
  float m_Y;

 public:

  Vector2( );
  Vector2 ( float x, float y );
  ~Vector2( );
  const float GetX( ) const;
  void SetX ( float x );
  const float GetY( )  const;
  void SetY ( float y );
  Vector2& operator= ( const Vector2& other );
  Vector2& operator+= ( const Vector2& other );
  Vector2& operator-= ( const Vector2& other );
  Vector2 operator+ ( const Vector2& other );
  Vector2 operator- ( const Vector2& other );
  Vector2 operator* ( const float& other );
  Vector2 operator*= ( const float& other );
  Vector2 operator/ ( const float& other );
  Vector2 operator/= ( const float& other );
  Vector2 operator* ( StompedReality::Math::Matrix& other );
  Vector2 operator*= ( StompedReality::Math::Matrix& other );
  void Add ( float x, float y );
  void Add ( Vector2* other );
  void Normalize( );
  void Scale ( const Vector2& other );
  const float Length( );
  const float Dot ( const Vector2& other );
  bool Equals( const Vector2& other, float epsilon = 0.00001f );
};

}
}
#endif // VECTOR2_H
